﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Web;
using iTextSharp.text.pdf;
using iTextSharp.text;
using OfficeOpenXml;
using System.IO;
using System.Web.UI;
using objetos;
using negocios;
using publico;

namespace relatorios
{
    public class REL_TB_CARTAO_CREDITO : REL_PDFPAGE
    {
        private const string arquivo = "cartao_credito.pdf";
        private const string diretorio = "~/relatorio/cartao_credito";

        BLL_TB_RELATORIO b_tb_relatorio = new BLL_TB_RELATORIO();
        OBJ_TB_RELATORIO o_tb_relatorio = new OBJ_TB_RELATORIO();

        public void ExportarPDF(List<OBJ_TB_CARTAO_CREDITO> lista)
        {
            bool erro = false;
            string path = HttpContext.Current.Server.MapPath(diretorio);
            string file = HttpContext.Current.Server.MapPath(diretorio + "/" + arquivo);

            try
            {

                foreach (OBJ_TB_RELATORIO o_tb_relatorio in b_tb_relatorio.SelecionarLista(string.Format("id_relatorio_tipo = {0}", (int)PUB_ENUM.TIPO_RELATORIO.PDF), ""))
                {
                    margem_direita = (float)o_tb_relatorio.margem_direita;
                    margem_esquerda = (float)o_tb_relatorio.margem_esquerda;
                    margem_inferior = (float)o_tb_relatorio.margem_inferior;
                    margem_superior = (float)o_tb_relatorio.margem_superior;
                    tamanho_titulo = o_tb_relatorio.tamanho_titulo;
                    tamanho_texto = o_tb_relatorio.tamanho_texto;
                    tamanho_rodape = o_tb_relatorio.tamanho_rodape;
                    tamanho_campo = o_tb_relatorio.tamanho_campo;

                }


                // VERIFICA SE EXISTE DIRETORIO SENAO CRIA UM DIRETORIO

                if (!PUB_FUNCOES.ExisteDiretorio(path))
                {
                    PUB_FUNCOES.CriarDiretorio(path);
                }

                // VERIFICA SE EXISTE UM ARQUIVO SE EXISTE DELETA
                if (PUB_FUNCOES.ExisteArquivo(file))
                {
                    if (!PUB_FUNCOES.ArquivoEstaApenasLeitura(file))
                    {
                        PUB_FUNCOES.ExcluirArquivo(file);
                    }
                    else
                    {
                        erro = true;
                    }
                }


                if (!erro)
                {

                    //create an instance of a PDF document. You may need to play with the margins to ensure the "look" is right
                    Document doc = new Document(PageSize.A4, margem_esquerda, margem_direita, margem_superior, margem_inferior);


                    PdfWriter pWriter = PdfWriter.GetInstance(doc, PUB_FUNCOES.AbrirArquivo(file, FileMode.Create));



                    // HEADER
                    PdfPTable tbHeader = new PdfPTable(1);
                    tbHeader.WidthPercentage = (100.0f);

                    // HEADER 
                    PdfPCell titulo = new PdfPCell(Titulo("Relatório de Cartão Crédito", tamanho_titulo));
                    titulo.HorizontalAlignment = Element.ALIGN_CENTER;
                    titulo.Border = 0;
                    tbHeader.AddCell(titulo);

                    // CONTEUDO
                    PdfPTable tbConteudo = new PdfPTable(2);
                    tbConteudo.WidthPercentage = (100.0f);
                    float[] colConteudoWidths = { 5, 95 };
                    tbConteudo.SetWidths(colConteudoWidths);

                    // HEADER 
                    // HEADER 
                    PdfPCell chCol1 = new PdfPCell(Texto("Id", tamanho_campo));
                    PdfPCell chCol2 = new PdfPCell(Texto("Descrição", tamanho_campo));
                    tbConteudo.AddCell(chCol1);
                    tbConteudo.AddCell(chCol2);
                 

                    // LINHAS
                    foreach (OBJ_TB_CARTAO_CREDITO o_tb_cartao_credito in lista)
                    {
                        tbConteudo.AddCell(Celula(o_tb_cartao_credito.id.ToString(), tamanho_texto));
                        tbConteudo.AddCell(Celula(o_tb_cartao_credito.desc_cartao_credito.ToString(), tamanho_texto));                       
                    }

                    doc.Open();
                    // logo
                    OnStartPage(pWriter, doc);

                    doc.Add(tbHeader);
                    doc.Add(QuebraLinha());
                    doc.Add(tbConteudo);

                    OnEndPage(pWriter, doc);

                    // contador
                    doc.Close();


                    Download(file);

                }
                else
                {

                }

            }
            catch (Exception)
            {

                throw;
            }

        }
    }
}
